Micron Document
Fox's Git Mirrors


Displaying Raw • Download

examples/wasm/vendor/github.com/dunglas/httpsfv/boolean.go 633735d797cc5f5d48cb2e22e8fd7cd743930daf (633735d7) Text, 958 B

package httpsfv

import (
"errors"
"io"
)

// ErrInvalidBooleanFormat is returned when a boolean format is invalid.
var ErrInvalidBooleanFormat = errors.New("invalid boolean format")

// marshalBoolean serializes as defined in
// https://httpwg.org/specs/rfc9651.html#ser-boolean.
func marshalBoolean(bd io.StringWriter, b bool) error {
if b {
_, err := bd.WriteString("?1")

return err
}

_, err := bd.WriteString("?0")

return err
}

// parseBoolean parses as defined in
// https://httpwg.org/specs/rfc9651.html#parse-boolean.
func parseBoolean(s *scanner) (bool, error) {
if s.eof() || s.data[s.off] != '?' {
return false, &UnmarshalError{s.off, ErrInvalidBooleanFormat}
}
s.off++

if s.eof() {
return false, &UnmarshalError{s.off, ErrInvalidBooleanFormat}
}

switch s.data[s.off] {
case '0':
s.off++

return false, nil
case '1':
s.off++

return true, nil
}

return false, &UnmarshalError{s.off, ErrInvalidBooleanFormat}
}

Served by rngit 1.5.4 - Generated in 0.02s